package com.situ.day3;

import java.util.Scanner;

import org.junit.Test;

public class Homework {
	
//	1、输出一下结构：
//	1
//	12
//	123
//	1234
//	12345
	@Test
	public void test1() {
		for (int i = 1; i <= 5; i++) {
			for (int j = 1; j <= i; j++) {
				System.out.print(j);
			}
			System.out.println();
		}
	}
	
//	     *
//	    ***
//	   *****
//	  *******
//	 *********
//	***********
	@Test
	public void test2_1() {
		for (int i = 1; i <= 6; i++) {// 控制行数
			for (int j = 1; j <= 6 - i; j++) {// 每行应打印空格数
				System.out.print(" ");
			}
			for (int k = 1; k <= i * 2 - 1; k++) {// 每行应打印*数
				System.out.print("*");
			}
			System.out.println();
		}
	}
	

	
	//打印倒三角形
	@Test
	public void test2_2() {
		for (int i = 1; i <= 6; i++) {// 控制行数
			for (int j = 0; j <= 6; j++) {// 每行应打印空格数
				System.out.print(" ");
			}
			for (int k = 1; k <= (6 - i) * 2 + 1; k++) {// 每行应打印*数
				System.out.print("*");
			}
			System.out.println();
		}
	}
	
//	计算1-100以内所有奇数的和以及所有偶数的和，分别打印出来。
	@Test
	public void test3() {
		int oddSum = 0;// 奇数和
		int evenSum = 0;// 偶数和
		// 打印所有奇数并求和
		System.out.print("奇数为：");
		for (int i = 1; i <= 100; i++) {
			if (i % 2 != 0) { // 求奇数
				System.out.print(i + " ");
				oddSum = oddSum + i;
			}
		}
		System.out.println();
		System.out.println("OddSum=" + oddSum); // 打印奇数和
		System.out.print("偶数为：");
		// 打印所有偶数并求和
		for (int i = 1; i <= 100; i++) {
			if (i % 2 == 0) {// 求偶数
				System.out.print(i + " ");
				evenSum = evenSum + i;
			}
		}
		System.out.println();
		System.out.println("EvenSum=" + evenSum); // 打印偶数和
	}
	
//	4、用for循环输出1—1000之间能被5整除的数，且每行输出3个
	@Test
	public void test4() {
		int count = 0;// 计算个数
		for (int i = 1; i <= 1000; i++) {
			if (i % 5 == 0) {// 能被5整除
				System.out.print(i + "\t");
				count++;
				if (count % 3 == 0) {// 每3个为一行
					System.out.println();
				}
			}

		}
	}
	
//	5、计算9的阶乘
	@Test
	public void test5() {
		int multiply = 1;
		for (int i = 1; i <= 9; i++) {
			multiply = multiply * i;
		}
		System.out.println("mul=" + multiply);
	}
	
//	6、题目：企业发放的奖金根据利润提成。利润(I)低于或等于10万元时，奖金可提10%；
//	利润高于10万元，低于20万元时，低于10万元的部分按10%提成，高于10万元的部分，可可提成7.5%；
//	20万到40万之间时，高于20万元的部分，可提成5%；40万到60万之间时高于40万元的部分，可提成3%；
//	60万到100万之间时，高于60万元的部分，可提成1.5%，高于100万元时，超过100万元的部分按1%提成，
//	从键盘输入当月利润，求应发放奖金总数？
	@Test
	public void test6() {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入利润：");
		double profit = scanner.nextDouble(); // 利润
		double bonus = 0; // 奖金
		// 输入利润小于0时，输出错误信息
		if (profit < 0) {
			System.out.println("利润输入无效！");
			return;
		}
		if (profit <= 10) { // 利润小于10万
			bonus = profit * 0.1;
		} else if (profit > 10 && profit <= 20) { // 利润为10~20万
			bonus = 10 * 0.1 + (profit - 10) * 0.075;
		} else if (profit > 20 && profit <= 40) { // 利润为20~40万
			bonus = 10 * 0.1 + 10 * 0.075 + (profit - 20) * 0.05;
		} else if (profit > 40 && profit <= 60) { // 利润为40~60万
			bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (profit - 40) * 0.03;
		} else if (profit > 60 && profit <= 100) { // 利润为60~100万
			bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (profit - 60) * 0.15;
		} else { // 利润高于100万
			bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 40 * 0.15 + (profit - 100) * 0.01;
		}
		// 应发奖金总数
		System.out.println("奖金为：" + bonus + "万元");
	}
	
//	7、使用循环打印100-200之间所有的素数（只能被1和自己整除的数叫素数）
	@Test
	public void test7() {
		System.out.println("100~200之间的素数有：");
		for (int i = 100; i <= 200; i++) {
			// j控制除数范围
			int j = 2;
			for (; j <= i; j++) {
				if (i % j == 0) { // i能被j整除，说明有可能不是素数，直接跳出本层循环
					break;
				}
			}
			// 若j == i,说明i被它自己本身整除，则为素数；否则不是素数
			if (j == i) { 
				System.out.print(i + "  ");
			}
		}
	}
	
	//第7题第二种方法
	@Test
	public void test8() {
		System.out.println("100~200之间的素数有：");
		for (int i = 100; i <= 200; i++) {
			// 初始认为是素数
			boolean isPrime = true;
			for (int j = 2; j < i; j++) {
				if (i % j == 0) {
					isPrime = false;
					break;
				}
			}
			if (isPrime == true) {
				System.out.print(i + "  ");
			}
		}
	}
	
//	 ***********   
//	  *********     
//	   *******
//	    *****
//	     ***
//	      *
	
//	1   	11		0
//	2   	9		1
//	3   	7		2
//	4   	5		3
//	5   	3		4
//	6   	1		5
	@Test
	public void test9() {
		for (int i = 1; i <= 6; i++) {// 控制行数
			for (int j = 1; j <= i-1; j++) {// 每行应打印空格数
				System.out.print(" ");
			}
			for (int k = 1; k <= (6 - i) * 2 + 1; k++) {// 每行应打印*数
				System.out.print("*");
			}
			System.out.println();
		}
	}
}
